package com.df.excel_export.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class EnumManager {
    public List<EnumDefine> enumDefines = new ArrayList<>();
    public static String  ENUM_TAG_All = "all";
    //枚举定义按tag分组
    public Map<String,List<EnumDefine>> tagEnumDefines = new HashMap<>();

    public void addEnumDefine(EnumDefine enumDefine){
        for (EnumDefine define : enumDefines) {
            if(define.enumName.equals(enumDefine.enumName)){

                return;
            }
        }
        enumDefines.add(enumDefine);
        List<EnumDefine> list = tagEnumDefines.getOrDefault(enumDefine.tag,new ArrayList<>());
        list.add(enumDefine);
        tagEnumDefines.put(enumDefine.tag, list);
    }

    public EnumDefine getEnum(Predicate<EnumDefine> filter){
        for (EnumDefine enumDefine : enumDefines) {
           if(filter.test(enumDefine)){
               return enumDefine;
           }
        }
        return null;
    }


    public void groupByTag(){
        Map<String, List<EnumDefine>> collect = enumDefines.stream().collect(Collectors.groupingBy((def) -> def.tag, Collectors.toList()));
        tagEnumDefines = collect;
    }

    public List<EnumDefine> getEnumDefinesByTag(String tag){
        return tagEnumDefines.getOrDefault(tag,new ArrayList<>());
    }
}
